package expression;

import Tools.Env;
import Tools.Mem;
import Tools.Type;

/**
 * Renvoie la valeur de l'adresse pointee par un pointeur 
 * @author asus Aurelien
 *
 */
public class ValPt implements IExpression {
	/**
	 * le nom du pointeur
	 */
	private String ident;
	
	/**
	 * 
	 * @param ident le nom
	 */
	public ValPt(String ident){
		this.ident = ident;
	}

	@Override
	public Object eval(Env e, Mem m) {
		// recupere l'adresse pointee
		int addr = (int)m.lookup((int)e.lookup(ident, Type.ADDR));
		// renvoi la valeur
		return m.lookup(addr);
	}

}
